﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ServiceCore.Tool.TIM.sns
{

    #region  添加好友 
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class friend_add : base_post_model<friend_add_post>
    {
        public override string servicename
        {
            get { return "sns"; }
        }
        public override string command
        {
            get { return "friend_add"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class friend_add_post
    {
        /// <summary>
        /// 需要为该 UserID 添加好友
        /// </summary>
        public string From_Account { get; set; }
        /// <summary>
        /// 好友结构体对象
        /// </summary>
        public List<AddFriendItem> AddFriendItem { get; set; }
        /// <summary>
        /// 加好友方式（默认双向加好友方式）：  Add_Type_Single 表示单向加好友 Add_Type_Both 表示双向加好友
        /// </summary>
        public string AddType { get; set; }
        /// <summary>
        /// 管理员强制加好友标记：1表示强制加好友，0表示常规加好友方式
        /// </summary>
        public int? ForceAddFlags { get; set; }
    } 
    public class AddFriendItem
    {
        /// <summary>
        /// 好友的 UserID
        /// </summary>
        public string To_Account { get; set; }
        /// <summary>
        /// From_Account 对 To_Account 的好友备注，详情可参见 标配好友字段  //https://cloud.tencent.com/document/product/269/1501#.E6.A0.87.E9.85.8D.E5.A5.BD.E5.8F.8B.E5.AD.97.E6.AE.B5
        /// </summary>
        public string Remark { get; set; }
        /// <summary>
        ///  From_Account 对 To_Account 的分组信息，添加好友时只允许设置一个分组，因此使用 String 类型即可，详情可参见 标配好友字段
        /// </summary>
        public string GroupName { get; set; }
        /// <summary>
        /// 加好友来源字段，详情可参见 标配好友字段
        /// </summary>
        public string AddSource { get; set; }  
        /// <summary>
        /// From_Account 和 To_Account 形成好友关系时的附言信息，详情可参见 标配好友字段
        /// </summary>
        public string AddWording { get; set; } 
    }
    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class friend_add_result : base_post_result
    {
        /// <summary>
        /// 返回处理失败的用户列表，仅当存在失败用户时才返回该字段
        /// </summary>
        public string[] Fail_Account { get; set; }
        /// <summary>
        /// 批量加好友的结果对象数组
        /// </summary>
        public List<friend_add_ResultItem> ResultItem { get; set; }
    }
    /// <summary>
    /// 批量加好友的结果对象数组
    /// </summary>
    public class friend_add_ResultItem
    {
        public string To_Account { get; set; }

        public int ResultCode { get; set; }

        public string ResultInfo { get; set; }
    }
    #endregion

    #region  导入好友 
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class friend_import : base_post_model<friend_import_post>
    {
        public override string servicename
        {
            get { return "sns"; }
        }
        public override string command
        {
            get { return "friend_import"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class friend_import_post
    {
        /// <summary>
        /// 需要为该 UserID 添加好友
        /// </summary>
        public string From_Account { get; set; }
        /// <summary>
        /// 好友结构体对象
        /// </summary>
        public List<AddFriendItem_for_import> AddFriendItem { get; set; } 
    }

    public class AddFriendItem_for_import
    {
        /// <summary>
        /// 	好友的 UserID
        /// </summary>
        public string To_Account { get; set; }

        /// <summary>
        /// From_Account 对 To_Account 的好友备注，详情可参见 标配好友字段
        /// </summary>
        public string Remark { get; set; }
        /// <summary>
        /// From_Account 对 To_Account 的好友备注时间
        /// </summary>
        public long RemarkTime { get; set; }
        /// <summary>
        /// From_Account 对 To_Account 的分组信息，详情可参见 标配好友字段
        /// </summary>
        public string[] GroupName { get; set; } 
        /// <summary>
        /// 加好友来源字段，详情可参见 标配好友字段
        /// </summary>
        public string AddSource { get; set; }
        /// <summary>
        /// 	From_Account 和 To_Account 形成好友关系时的附言信息，详情可参见 标配好友字段
        /// </summary>
        public string AddWording { get; set; }
        /// <summary>
        /// From_Account 和 To_Account 形成好友关系的时间
        /// </summary>
        public long AddTime { get; set; }
        /// <summary>
        /// From_Account 对 To_Account 的自定义好友数据，每一个成员都包含一个 Tag 字段和一个 Value 字段，详情可参见 自定义好友字段
        /// </summary>
        public List<CustomItem> CustomItem { get; set; }
    }
    public class CustomItem
    {
        /// <summary>
        /// 自定义好友字段的名称
        /// </summary>
        public string Tag { get; set; }
        /// <summary>
        /// 自定义好友字段的值
        /// </summary>
        public object Value { get; set; }
    }

    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class friend_import_result : base_post_result
    {
        /// <summary>
        /// 返回处理失败的用户列表，仅当存在失败用户时才返回该字段
        /// </summary>
        public string[] Fail_Account { get; set; }
        /// <summary>
        /// 批量加好友的结果对象数组
        /// </summary>
        public List<friend_import_ResultItem> ResultItem { get; set; }
    }
    public class friend_import_ResultItem
    {
        public string To_Account { get; set; }

        public int ResultCode { get; set; }

        public string ResultInfo { get; set; }
    }
    #endregion
     
    #region  删除好友 
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class friend_delete : base_post_model<friend_delete_post>
    {
        public override string servicename
        {
            get { return "sns"; }
        }
        public override string command
        {
            get { return "friend_delete"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class friend_delete_post
    {
        /// <summary>
        /// 需要删除该 UserID 的好友
        /// </summary>
        public string From_Account { get; set; }
        /// <summary>
        /// 待删除的好友的 UserID 列表，单次请求的 To_Account 数不得超过1000
        /// </summary>
        public List<string> To_Account { get; set; }
        /// <summary>
        /// 删除模式  Delete_Type_Single 单向删除 Delete_Type_Both 双向删除
        /// </summary>
        public string DeleteType { get; set; }
    }

    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class friend_delete_result : base_post_result
    {
        /// <summary>
        /// 批量删除好友的结果对象数组
        /// </summary>
        public List<friend_delete_ResultItem> ResultItem { get; set; }
    }

    public class friend_delete_ResultItem
    {
        /// <summary>
        /// 请求删除的好友的 UserID
        /// </summary>
        public string To_Account { get; set; }
        /// <summary>
        /// To_Account 的处理结果，0表示成功，非0表示失败，非0取值的详细描述请参见 错误码说明
        /// </summary>
        public int ResultCode { get; set; }
        /// <summary>
        /// To_Account 的错误描述信息，成功时该字段为空
        /// </summary>
        public string ResultInfo { get; set; }
    }
    #endregion

    #region  更新好友 
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class friend_update : base_post_model<friend_update_post>
    {
        public override string servicename
        {
            get { return "sns"; }
        }
        public override string command
        {
            get { return "friend_update"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class friend_update_post
    {
        /// <summary>
        /// 需要删除该 UserID 的好友
        /// </summary>
        public string From_Account { get; set; }
          /// <summary>
          /// 
          /// </summary>
        public List<UpdateItem> UpdateItem { get; set; }
    }

    public class UpdateItem
    {
        /// <summary>
        /// 好友的 UserID
        /// </summary>
        public string To_Account { get; set; }

        public List<SnsItem> SnsItem { get; set; }
    }
    public class SnsItem
    {
        /// <summary>
        /// 需要更新的关系链字段的字段名，目前只支持好友备注、好友分组、关系链自定义字段的更新操作，关系链字段的详细信息可参见 好友表
        /// Tag_SNS_IM_Group 好友分组：
        /// Tag_SNS_IM_Remark 好友备注：
        /// Tag_SNS_IM_AddSource 加好友来源：
        /// Tag_SNS_IM_AddWording 加好友附言：
        /// </summary>
        public string Tag { get; set; }
        /// <summary>
        /// 需要更新的关系链字段的值，关系链字段的值类型信息可参见 好友表
        /// </summary>
        public object Value { get; set; }
    }

    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class friend_update_result : base_post_result
    {
        /// <summary>
        /// 批量删除好友的结果对象数组
        /// </summary>
        public List<friend_update_ResultItem> ResultItem { get; set; }
    }

    public class friend_update_ResultItem
    {
        /// <summary>
        /// 请求删除的好友的 UserID
        /// </summary>
        public string To_Account { get; set; }
        /// <summary>
        /// To_Account 的处理结果，0表示成功，非0表示失败，非0取值的详细描述请参见 错误码说明
        /// </summary>
        public int ResultCode { get; set; }
        /// <summary>
        /// To_Account 的错误描述信息，成功时该字段为空
        /// </summary>
        public string ResultInfo { get; set; }
    }
    #endregion
     
    #region  校验好友 
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class friend_check : base_post_model<friend_check_post>
    {
        public override string servicename
        {
            get { return "sns"; }
        }
        public override string command
        {
            get { return "friend_check"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class friend_check_post
    {
        /// <summary>
        /// 需要校验该 UserID 的好友
        /// </summary>
        public string From_Account { get; set; }
        /// <summary>
        /// 请求校验的好友的 UserID 列表，单次请求的 To_Account 数不得超过1000
        /// </summary>
        public List<string> To_Account { get; set; }
        /// <summary>
        ///  校验模式，详情可参见  CheckResult_Type_Single 单向校验  CheckResult_Type_Both 双向校验
        /// </summary>
        public string CheckType { get; set; }
    }

    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class friend_check_result : base_post_result
    {
        /// <summary>
        /// 返回处理失败的用户列表，仅当存在失败用户时才返回该字段
        /// </summary>
        public string[] Fail_Account { get; set; }
        /// <summary>
        /// 校验结果对象数组
        /// </summary>
        public List<InfoItem> InfoItem { get; set; }
    }

    public class InfoItem
    {
        /// <summary>
        /// 请求删除的好友的 UserID
        /// </summary>
        public string To_Account { get; set; }
        /// <summary>
        /// 校验成功时 To_Account 与 From_Account 之间的好友关系
        /// 单向校验好友关系时可能的结果有
        /// CheckResult_Type_NoRelation  From_Account 的好友表中没有 To_Account，但无法确定 To_Account 的好友表中是否有 From_Account
        /// CheckResult_Type_AWithB  From_Account 的好友表中有 To_Account，但无法确定 To_Account 的好友表中是否有 From_Account
        /// 双向校验好友关系时可能的结果有：
        /// CheckResult_Type_BothWay 	From_Account 的好友表中有 To_Account，To_Account 的好友表中也有 From_Account
        /// CheckResult_Type_AWithB 	From_Account 的好友表中有 To_Account，但 To_Account 的好友表中没有 From_Account
        /// CheckResult_Type_BWithA     From_Account 的好友表中没有 To_Account，但 To_Account 的好友表中有 From_Account
        /// CheckResult_Type_NoRelation From_Account 的好友表中没有 To_Account，To_Account 的好友表中也没有 From_Account
        /// </summary>
        public string Relation { get; set; }
        /// <summary>
        /// To_Account 的错误描述信息，成功时该字段为空
        /// </summary>
        public string ResultInfo { get; set; }
    }
    #endregion
}
